package editorsvg.editor.herramientas;

import editorsvg.editor.documento.ElementoInstanciaSimbolo;
import editorsvg.editor.documento.Simbolo;
import editorsvg.editor.vista.EditorDocumento;
import java.awt.Cursor;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.event.MouseEvent;
import java.awt.geom.Point2D;

/**
 * Herramienta para la insercción de instancias de un simbolo.
 * @author Jorge Barjano
 */
public class HerramientaSimbolo extends HerramientaBase {
    private EditorDocumento editor;
    private ElementoInstanciaSimbolo instancia;
//    private Dimension dimension;
    
    public HerramientaSimbolo(EditorDocumento editor, Simbolo simbolo) {
        this.editor = editor;
        instancia = new ElementoInstanciaSimbolo(simbolo);
//        dimension = editor.getConversor().aPixeles(
//                new MiDimension2D.Double(simbolo.getEncuadre().getWidth(), simbolo.getEncuadre().getHeight()));
    }
    
    @Override
    public boolean moviendo(MouseEvent e) {
        Point2D centro = editor.getConversor().aUnidadesReales(e.getPoint());
        instancia.centrarEn(centro.getX(), centro.getY());
        return true;
    }

    @Override
    public boolean liberado(MouseEvent e) {
        
        editor.agregarNodoGrafico(instancia);
        editor.setHerramienta(new HerramientaSeleccion(editor));
        return true;
    }
    
//    @Override
//    public void pintarEnCoordenadasLogicas(Graphics2D graphics) {
//        graphics.draw(instancia.getContorno());
//    }
    
    @Override
    public void pintarEnPixeles(Graphics2D graphics) {
        Shape shapePixels = editor.getConversor().transformarAPixeles(instancia.getContorno());
        graphics.draw(shapePixels);
    }

    @Override
    public Cursor getCursor() {
        return null;
    }

}
